from flask import current_app
from flask import g, jsonify
from flask import redirect
from flask import request
from flask import session

from info import db
from info.utils.response_code import RET
from . import profile_blu
from flask import render_template
from info.utils.common import user_login_data
@profile_blu.route("/info")
@user_login_data
def info():
    # 获取用户登录信息
    user = g.user
    if not user:
        # 用户未登录，重定向到主页
        return redirect("/")

    data = {
        "user": user.to_dict() if user else None
    }

    return render_template("news/user.html", data = data)


@profile_blu.route("/base_info", methods=["GET", "POST"])
@user_login_data
def base_info():
    """
    渲染 user_base_info.html   get
    处理 保存基本资料 请求     post

    处理 保存基本资料 请求:
    1,获取参数
    2,判空校验
    3,保存数据到数据库  (session中的数据要更新)
    4,返回操作成功

    """
    # 获取用户登录信息
    user = g.user
    # 如果没有登录，重定向到首页
    if not user:
        return redirect("/")

    if request.method == "GET":

        data = {
            "user": user.to_dict() if user else None
        }
        return render_template("news/user_base_info.html", data=data)

    # 1, 获取参数
    data_dict = request.json
    signature = data_dict.get("signature")
    nick_name = data_dict.get("nick_name")
    gender = data_dict.get("gender")
    # 2, 判空校验
    if not all([signature, nick_name, gender]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误1")
    if gender not in("MAN", "WOMAN"):
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误2")
    # 3, 保存数据到数据库(session中的数据要更新)
    user.signature = signature
    user.nick_name = nick_name
    user.gender = gender

    try:
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR,errmsg="数据库操作失败")

    session["nick_name"] = nick_name
    # 4, 返回操作成功
    return jsonify(errno=RET.OK, errmsg="保存成功")
